package com.ebupt.migu.music.schedule.mapper;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.ebupt.migu.common.pojo.ErrorReport;
import com.ebupt.migu.music.schedule.entity.LiushiInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Created by Intellij IDEA.
 * User:  liuyangyang@cd.ebupt.com
 * Date:  2019/10/29
 */
@Mapper
@DS("mysql_mg")
public interface SMSTaskMapper {
    /**
     * 查询需要立即发送的短信策略
     *
     * @return
     */
    List<HashMap<String, Object>> querySendMessageNow();

    /**
     * 查询单次发送短信的策略
     *
     * @return
     */
    List<HashMap<String, Object>> querySendMessageOnce(String beginTime);

    /**
     * 查询循环发送短信的策略
     *
     * @param dayOnly
     * @return
     */
    List<HashMap<String, Object>> querySendMessageLoop(String dayOnly);

    /**
     * 查询间隔发送短信的策略列表
     *
     * @param dayOnly
     * @return
     */
    List<HashMap<String, Object>> querySendMessageInterval(String dayOnly);

    /**
     * 查询白名单列表
     *
     * @return
     */
    List<String> queryWhite();

    /**
     * 查询黑名单列表
     *
     * @return
     */
    List<String> queryBlack();

    /**
     * 更新策略状态
     *
     * @param map
     */
    void updateStrategyStatus(Map<String, Object> map);

    /**
     * 查询人群规模
     *
     * @param id
     * @return
     */
    Integer size(String id);

    /**
     * 查询指定名单中的成员：msisdn/uuid/imei/idfa
     *
     * @return
     */
    List<String> queryRosterMembers(String id);

    /**
     * 新增sftp文件同步记录
     *
     * @param map
     */
    void create_sftp_data_sync_record(Map<String, Object> map);

    /**
     * 查询标签平台的人群
     *
     * @param groupId
     * @return
     */
    HashMap<String, Object> isLabelUserGroup(String groupId);

    /**
     * 查询人群状态
     *
     * @param groupId
     * @return
     */
    String qryUserGroupStatus(String groupId);

    /**
     * 人群下发失败记录
     *
     * @param errorReport
     * @return
     */
    void insertErrorReport(ErrorReport errorReport);

    /**
     * 查询客群创建方式
     *
     * @param groupId
     * @return
     */
    String queryUserGroupCreateWay(String groupId);

    /**
     * 批量新增短信下发明细信息
     * @param param
     * @return
     */
    int insertArkGroupInfos(@Param("params") Map<String, Object> param);

    /**
     * 新增短信下发明细信息
     * @param param
     * @return
     */
    int insertArkGroupInfo(@Param("params") Map<String, Object> param,
                           @Param("phoneNo")String phoneNo,@Param("sendState")String sendState);

    /**
     * 判断合并客群是不是方舟同步过来的客群
     * @param resGroupList
     * @return
     */
    List<Map> isArkUserGroup(@Param("resGroupList")List<String> resGroupList);

    /**
     * 构建每日的明细表
     * @param date
     */
    void createSmsInfoTable(@Param("date")String date);

    /**
     *
     * @param groupId
     * @return
     */
    String getUserGroupResgroup(String groupId);

    /**
     * 构建策略名称中含有流失策略明细统计表
     * @param date
     */
    void createliushiInfoTable(@Param("date")String date);

    /**
     * 新增流失客群明细记录
     * @return
     */
    int insertliushiInfo(@Param("params") Map<String, Object> param,
                         @Param("phoneNo")String phoneNo,@Param("sendState")String sendState);

    /**
     * 查询指定端口信息
     * @param id
     * @return
     */
    public HashMap<String, String> qryMegamarketInfoByID(int id);

}
